/* * This file is part of OsmPointsToMap. * * OsmPointsToMap is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * OsmPointsToMap is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OsmPointsToMap. If not, see <http://www.gnu.org/licenses/>. */ package org.fakeroot.android.osmpointtomap; import java.util.HashMap; import java.util.List; import org.fakeroot.android.osmpointtomap.marker.HelloItemizedOverlay; import org.fakeroot.android.osmpointtomap.marker.OverlayMarker; import org.fakeroot.android.osmpointtomap.pojos.BoundingBox; import org.fakeroot.android.osmpointtomap.pojos.KeyStyle; import org.fakeroot.android.osmpointtomap.pojos.PoiDTO; import com.google.ads.AdRequest; import com.google.ads.AdSize; import com.google.ads.AdView; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; import android.view.MenuItem; import android.view.MotionEvent; import android.widget.LinearLayout; import android.widget.RelativeLayout.LayoutParams; import android.widget.Toast; public class MapA extends MapActivity { private LocationManager _lm; private boolean userGpsRequest = true; private MapController _mc; private MapView mapView; private InfoMapController controller; // HelloItemizedOverlay itemizedoverlay; private HashMap<String, HelloItemizedOverlay> overlayList = new HashMap<String, HelloItemizedOverlay>(); private Worker worker = Worker.getInstance(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.infomapactivity); // Do something with your map LinearLayout layout = ((LinearLayout) findViewById(R.id.infomaplayout2)); // mapView = (MapView) findViewById(R.id.mapview); mapView = new MapView(this, worker.getMapApiKey()); mapView.setClickable(true); mapView.setBuiltInZoomControls(true); { /* RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); */ layout.addView(mapView); } List<Overlay> listOfOverlays = mapView.getOverlays(); // listOfOverlays.clear(); listOfOverlays.add(new Overlay() { @Override public boolean onTouchEvent(MotionEvent event, MapView mapView) { Log.d("osm", "onTouchEvent2: " + event.getAction()); // ---when user lifts his finger--- if (event.getAction() == 1) { Log.d(ACTIVITY_SERVICE, "changed"); mapChanged(); return false; } return false; } }); controller = new InfoMapController(); controller.setInfoMapActivity(this); List<Overlay> mapOverlays = mapView.getOverlays(); if (worker.getKeys() != null) { for (KeyStyle key : worker.getKeys()) { if(key.getValue()==null){ HelloItemizedOverlay temp = new HelloItemizedOverlay( key.getMarkerPic(), this); overlayList.put(key.getKey(), temp); temp.population(); mapOverlays.add(temp); }else{ for(KeyStyle value: key.getValue()){ HelloItemizedOverlay temp = new HelloItemizedOverlay( value.getMarkerPic(), this); overlayList.put(value.getKey(), temp); temp.population(); mapOverlays.add(temp); } } } } // location _mc = mapView.getController(); _mc.setZoom(16); _lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); mapChanged(); } public void drawMarker(PoiDTO[] markers) { for (String k : overlayList.keySet()) { overlayList.get(k).clear(); } for (PoiDTO poi : markers) { int lat = (int) (poi.getLat() * 1e6); int lng = (int) (poi.getLng() * 1e6); GeoPoint point = new GeoPoint(lat, lng); if (worker.getKeys() != null) { for (KeyStyle key : worker.getKeys()) { if (poi.getKeyName() != null && key.getKey().equals(poi.getKeyName())) { Log.d("response", poi.toString()); if(key.getValue()!=null){ for(KeyStyle value: key.getValue()){ if(value.getKey().equals(poi.getKeyValue())){ overlayList.get(poi.getKeyValue()).addOverlay( new OverlayMarker(point, poi)); } } }else{ overlayList.get(key.getKey()).addOverlay( new OverlayMarker(point, poi)); } } } } } for (String k : overlayList.keySet()) { overlayList.get(k).population(); } } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } private void mapChanged() { controller.onMapChanged(new BoundingBox(mapView.getMapCenter(), mapView .getLatitudeSpan(), mapView.getLongitudeSpan())); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.thx: startActivity(new Intent(this, ThxA.class)); break; case R.id.location: Toast.makeText(this, "Locate me", Toast.LENGTH_LONG).show(); userGpsRequest = true; LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location location) { if (location != null && userGpsRequest) { Log.d("OMS", "Location: " + "lat: " + location.getLatitude() + "lng: " + location.getLongitude()); _mc.setCenter(new GeoPoint((int) (location .getLatitude() * 1e6), (int) (location .getLongitude() * 1e6))); userGpsRequest = false; _mc.setZoom(16); mapChanged(); worker.setLocation(location); } } }; if (_lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) _lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); else if (_lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) _lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); break; case R.id.search: Toast.makeText(this, "search", Toast.LENGTH_LONG).show(); break; } return true; } }